package com.hzy.fivepalace.common.page;

import com.hzy.fivepalace.common.util.ResponseUtil;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import jodd.util.StringUtil;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * 表格分页数据对象
 *
 * @author gejian
 */
@Data
@ApiModel(value = "请求列表返回实体对象")
public class TableDataInfo<T> implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 总记录数
     */
    @ApiModelProperty(value = "总记录数")
    private long total;

    /**
     * 列表数据
     */
    @ApiModelProperty(value = "列表数据")
    private List<T> rows;

    /**
     * 消息状态码
     */
    @ApiModelProperty(value = "状态码")
    private int code;

    /**
     * 消息内容
     */
    @ApiModelProperty(value = "消息内容")
    private String msg;

    /**
     * 表格数据对象
     */
    public TableDataInfo() {
    }

    /**
     * 分页
     *
     * @param list  列表数据
     * @param total 总记录数
     */
    public TableDataInfo(List<T> list, int total) {
        this.rows = list;
        this.total = total;
    }

    /**
     * 响应成功请求分页数据
     */
    public static TableDataInfo getDataTable(List<?> list, long total) {
        TableDataInfo rspData = new TableDataInfo();
        rspData.setCode(ResponseUtil.SUCCESS_CODE);
        rspData.setMsg("成功");
        rspData.setRows(list);
        rspData.setTotal(total);
        return rspData;
    }

    /**
     * 响应失败请求分页数据
     */
    public static TableDataInfo errorDataTable(String msg) {
        TableDataInfo rspData = new TableDataInfo();
        rspData.setCode(ResponseUtil.FAIL_CODE);
        rspData.setMsg(StringUtil.isBlank(msg) ? "失败" : msg);
        rspData.setRows(null);
        rspData.setTotal(0);
        return rspData;
    }
}
